#include "bsp_OUT.h"


//Initialization GPIO for 16-OUT
void Out_InitGPIO(void)
{
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
	GPIO_InitTypeDef  GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
	GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
	GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
	GPIO_Init(GPIOA, &GPIO_InitStructure);
	
	
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
	GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
	GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
	GPIO_Init(GPIOC, &GPIO_InitStructure);
	
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_15;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
	GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
	GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
	GPIO_Init(GPIOD, &GPIO_InitStructure);
	
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOG, ENABLE);
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
	GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
	GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
	GPIO_Init(GPIOG, &GPIO_InitStructure);
}

/**
  * @brief  Control Output.
  * @param  outNume: this is outport number,define in xx.h file.
  *   This parameter can be one of the following values:
  *     @arg OUT0~OUT16.
  * @param  state: this is outport state,define in xx.h file.
  *   This parameter can be one of the following values:
  *     @arg ON.
	*			@arg OFF.
  * @retval None
  */
void Output(int outNume , int state)
{
	switch(outNume)
	{
		case 1:
			if(state==ON)
			{
				GPIO_SetBits (GPIOD,GPIO_Pin_2);
			}
			else if(state==OFF)
			{
				GPIO_ResetBits (GPIOD,GPIO_Pin_2);
			}	
			break;
		case 2:
			if(state==ON)
			{
				GPIO_SetBits (GPIOD,GPIO_Pin_1);
			}
			else if(state==OFF)
			{
				GPIO_ResetBits (GPIOD,GPIO_Pin_1);
			}	
			break;
			case 3:
			if(state==ON)
			{
				GPIO_SetBits (GPIOD,GPIO_Pin_0);
			}
			else if(state==OFF)
			{
				GPIO_ResetBits (GPIOD,GPIO_Pin_0);
			}	
			break;
			case 4:
			if(state==ON)
			{
				GPIO_SetBits (GPIOC,GPIO_Pin_12);
			}
			else if(state==OFF)
			{
				GPIO_ResetBits (GPIOC,GPIO_Pin_12);
			}	
			break;
			case 5:
			if(state==ON)
			{
				GPIO_SetBits (GPIOC,GPIO_Pin_11);
			}
			else if(state==OFF)
			{
				GPIO_ResetBits (GPIOC,GPIO_Pin_11);
			}	
			break;
			case 6:
			if(state==ON)
			{
				GPIO_SetBits (GPIOC,GPIO_Pin_10);
			}
			else if(state==OFF)
			{
				GPIO_ResetBits (GPIOC,GPIO_Pin_10);
			}	
			break;
			case 7:
			if(state==ON)
			{
				GPIO_SetBits (GPIOA,GPIO_Pin_15);
			}
			else if(state==OFF)
			{
				GPIO_ResetBits (GPIOA,GPIO_Pin_15);
			}	
			break;
			case 8:
			if(state==ON)
			{
				GPIO_SetBits (GPIOC,GPIO_Pin_9);
			}
			else if(state==OFF)
			{
				GPIO_ResetBits (GPIOC,GPIO_Pin_9);
			}	
			break;
			case 9:
			if(state==ON)
			{
				GPIO_SetBits (GPIOD,GPIO_Pin_15);
			}
			else if(state==OFF)
			{
				GPIO_ResetBits (GPIOD,GPIO_Pin_15);
			}	
			break;
			case 10:
			if(state==ON)
			{
				GPIO_SetBits (GPIOG,GPIO_Pin_2);
			}
			else if(state==OFF)
			{
				GPIO_ResetBits (GPIOG,GPIO_Pin_2);
			}	
			break;
			case 11:
			if(state==ON)
			{
				GPIO_SetBits (GPIOG,GPIO_Pin_3);
			}
			else if(state==OFF)
			{
				GPIO_ResetBits (GPIOG,GPIO_Pin_3);
			}	
			break;
			case 12:
			if(state==ON)
			{
				GPIO_SetBits (GPIOG,GPIO_Pin_4);
			}
			else if(state==OFF)
			{
				GPIO_ResetBits (GPIOG,GPIO_Pin_4);
			}	
			break;
			case 13:
			if(state==ON)
			{
				GPIO_SetBits (GPIOG,GPIO_Pin_5);
			}
			else if(state==OFF)
			{
				GPIO_ResetBits (GPIOG,GPIO_Pin_5);
			}	
			break;
			case 14:
			if(state==ON)
			{
				GPIO_SetBits (GPIOG,GPIO_Pin_6);
			}
			else if(state==OFF)
			{
				GPIO_ResetBits (GPIOG,GPIO_Pin_6);
			}	
			break;
			case 15:
			if(state==ON)
			{
				GPIO_SetBits (GPIOG,GPIO_Pin_7);
			}
			else if(state==OFF)
			{
				GPIO_ResetBits (GPIOG,GPIO_Pin_7);
			}	
			break;
			case 16:
			if(state==ON)
			{
				GPIO_SetBits (GPIOG,GPIO_Pin_8);
			}
			else if(state==OFF)
			{
				GPIO_ResetBits (GPIOG,GPIO_Pin_8);
			}	
			break;
	}

}



